package Creche.Personne;

import java.io.Serializable;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import Creche.Donnees.Adresse;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;

@SuppressWarnings("serial")
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Personne implements Serializable {
	
	@PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
	
	private String nom;
	private String prenom;
	private String naissance;
	private Adresse adresse;
	private String tel;
	private String email;
	
	/**
     * Constructeur de la class Personne
     * @param nom de la personne
     * @param prenom de la personne
     * @param date de naissance de la personne
     */
    public Personne(String nom, String prenom, String naissance) {
    	this.nom = nom;
    	this.prenom = prenom;
    	this.naissance = naissance;
    }
    
    
    /**
	 * Enregistre la clé primaire d'une personne
	 * @param cle d'un objet
	 */
	public void setKey(Key cle) {
		key = KeyFactory.createKey(cle, Personne.class.getSimpleName(),
				nom + ":" + prenom + ":" + naissance);
	}
	
	
    /**
     * @return la clé primaire d'une personne dans la bd
     */
    public Key getKey() {
		return key;
	}
	
	
	/**
	 * Enregistre le nom du client
	 * @param nom
	 */
	public void setNom(String nom) {
		this.nom = nom;
	}
	
	
	/**
	 * @return le nom du client
	 */
	public String getNom() {
		return nom;
	}
	
	
	/**
	 * Enregistre le prénom du client
	 * @param prénom
	 */
	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}
	
	
	/**
	 * @return le prénom du client
	 */
	public String getPrenom() {
		return prenom;
	}
	
	
	/**
	 * Enregistre la date de naissance du client
	 * @param date de naissance
	 */
	public void setDate(String naissance) {
		this.naissance = naissance;
	}
	
	
	/**
	 * @return la date de naissance du client
	 */
	public String getDate() {
		return naissance;
	}
	
	
	/**
	 * Enregistre l'adresse complète du client
	 * @param adresse complète
	 */
	public void setAdresse(Adresse adresse) {
		this.adresse = adresse;
	}
	
	
	/**
	 * @return l'adresse complète du client
	 */
	public Adresse getAdresse() {
		return adresse;
	}
	
	
	/**
	 * Enregistre le numéro de téléphone du client
	 * @param tel
	 */
	public void setTel(String tel) {
		this.tel = tel;
	}
	
	
	/**
	 * @return le numéro de téléphone du client
	 */
	public String getTel() {
		return tel;
	}
	
	
	/**
     * Enregistre l'email du client
     * @param email
     */
    public void setEmail(String email) {
    	this.email = email;
    }
    
    
    /**
     * @return l'email du client
     */
    public String getEmail() {
    	return email;
    }
}
